home *** CD-ROM | disk | FTP | other *** search
- pushData MACRO registers
- IRP reg,<registers>
- push reg
- ENDM
- ENDM
-
-
-
- popData MACRO registers
- IRP reg,<registers>
- pop reg
- ENDM
- ENDM
-
-
-
- eq MACRO arg1,arg2,arg3,arg4
- cmp arg1,arg2
- jz arg3
- IFNB <arg4>
- jmp arg4
- ENDIF
- ENDM
-
-
-
- neq MACRO arg1,arg2,arg3,arg4
- cmp arg1,arg2
- jnz arg3
- IFNB <arg4>
- jmp arg4
- ENDIF
- ENDM
-
-
-
- null MACRO arg1,arg2,arg3
- cmp arg1,Nil
- jz arg2
- IFNB <arg3>
- jmp arg3
- ENDIF
- ENDM
-
-
-
- identity MACRO arg1,arg2,arg3
- cmp arg1,Nil
- jnz arg2
- IFNB <arg3>
- jmp arg3
- ENDIF
- ENDM
-
-
-
- zero MACRO arg1,arg2,arg3
- cmp arg1,0
- jz arg2
- IFNB <arg3>
- jmp arg3
- ENDIF
- ENDM
-
-
-
- notZero MACRO arg1,arg2,arg3
- cmp arg1,0
- jnz arg2
- IFNB <arg3>
- jmp arg3
- ENDIF
- ENDM
-
-
-
- lessThan MACRO arg1,arg2,arg3,arg4
- cmp arg1,arg2
- jb arg3
- IFNB <arg4>
- jmp arg4
- ENDIF
- ENDM
-
-
-
- moreThan MACRO arg1,arg2,arg3,arg4
- cmp arg1,arg2
- ja arg3
- IFNB <arg4>
- jmp arg4
- ENDIF
- ENDM
-
-
-
- lessThanEq MACRO arg1,arg2,arg3,arg4
- cmp arg1,arg2
- jbe arg3
- IFNB <arg4>
- jmp arg4
- ENDIF
- ENDM
-
-
-
- moreThanEq MACRO arg1,arg2,arg3,arg4
- cmp arg1,arg2
- jae arg3
- IFNB <arg4>
- jmp arg4
- ENDIF
- ENDM
-
-
-
- getStackArgs MACRO Regs
- mov bp,sp
- X = 8
- IRP Reg,<Regs>
- mov Reg,[bp+X]
- X = X+2
- ENDM
- ENDM
-
-
-
- setStackArgs MACRO Regs
- mov bp,sp
- X = 8
- IRP Reg,<Regs>
- mov WORD PTR[bp+X],Reg
- X = X+2
- ENDM
- ENDM
-
-
-
- setSegs MACRO arg
- mov ax,seg arg
- mov ds,ax
- mov es,ax
- ENDM
-
-
-
- exit MACRO
- mov ax,4c00h
- int 21h ;MSDOS interrupt
- ENDM
-
-
-
- COMMENT %
- ==============================================================================
- Defines a menu. Takes an object, and a list of menu items. It creates a table
- of ASCIIZ strings, and a table of pointers to those strings with an extra
- empty word to be used for positional information.
-
- =============================================================================%
- defMenu MACRO Obj,Items
- X = 0
- IRP Item,<Items>
- _defMenu Item,%X
- X = X+1
- ENDM
-
- Obj&Menu LABEL WORD
- X = 0
- IRP Item,<Items>
- defMenu_ Item,%X
- X = X+1
- ENDM
- DW Nil
- ENDM
-
-
-
- _defMenu MACRO Item,Cnt
- P&Cnt DB Item,0
- ENDM
-
-
-
- defMenu_ MACRO Item,Cnt
- DW 00
- DW P&Cnt
- ENDM
-
-
-
- COMMENT %
- ==============================================================================
- Defines a menu table. Takes an object, and a list of object, message pairs.
- It creates a table of these pairs, and a table of pointers to them with a
- preceeding count word.
-
- =============================================================================%
- defMenuTbl MACRO Obj,S0,S1,S2,S3,S4,S5,S6,S7,S8,S9
- LOCAL P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9
-
- P0 LABEL WORD
- makeTbl S0
- C0 = X/2
- IFNB <S1>
- P1 LABEL WORD
- makeTbl S1
- C1 = X/2
- IFNB <S2>
- P2 LABEL WORD
- makeTbl S2
- C2 = X/2
- IFNB <S3>
- P3 LABEL WORD
- makeTbl S3
- C3 = X/2
- IFNB <S4>
- P4 LABEL WORD
- makeTbl S4
- C4 = X/2
- IFNB <S5>
- P5 LABEL WORD
- makeTbl S5
- C5 = X/2
- IFNB <S6>
- P6 LABEL WORD
- makeTbl S6
- C6 = X/2
- IFNB <S7>
- P7 LABEL WORD
- makeTbl S7
- C7 = X/2
- IFNB <S8>
- P8 LABEL WORD
- makeTbl S8
- C8 = X/2
- IFNB <S9>
- P9 LABEL WORD
- makeTbl S9
- C9 = X/2
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
-
- Obj&MenuTbl LABEL WORD
- DW C0
- DW P0
- IFNB <S1>
- DW C1
- DW P1
- IFNB <S2>
- DW C2
- DW P2
- IFNB <S3>
- DW C3
- DW P3
- IFNB <S4>
- DW C4
- DW P4
- IFNB <S5>
- DW C5
- DW P5
- IFNB <S6>
- DW C6
- DW P6
- IFNB <S7>
- DW C7
- DW P7
- IFNB <S8>
- DW C8
- DW P8
- IFNB <S9>
- DW C9
- DW P9
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDM
-
-
-
- makeTbl MACRO M0,M1,M2,M3,M4,M5,M6,M7,M8,M9
- X = 0
- makeTbl_ M0,M1,M2,M3,M4,M5,M6,M7,M8,M9
- ENDM
-
-
-
- makeTbl_ MACRO M0,M1,M2,M3,M4,M5,M6,M7,M8,M9
- IFB <M0>
- EXITM
- ENDIF
- DW M0
- X = X+1
- makeTbl_ M1,M2,M3,M4,M5,M6,M7,M8,M9
- ENDM
-
-
-
- COMMENT %
- ==============================================================================
- Defines a dispatch table. Takes an object, and up to ten table entries. Each
- entry consists of an ASCII code, scan code, button status, upper row,
- left column, lower row, right column, and followed by object, message pairs.
-
- =============================================================================%
- defDispTbl MACRO Obj,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15
- Y = 0
- defOMTbls 0,<T0>,<T1>,<T2>,<T3>,<T4>,<T5>,<T6>,<T7>,<T8>,<T9>,<T10>,<T11>,<T12>,<T13>,<T14>,<T15>
-
- Obj&DispTbl LABEL WORD
- Y = 0
- defASTbls 0,<T0>,<T1>,<T2>,<T3>,<T4>,<T5>,<T6>,<T7>,<T8>,<T9>,<T10>,<T11>,<T12>,<T13>,<T14>,<T15>
- ENDM
-
-
-
- defOMTbls MACRO Count,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15
- IFB <T0>
- EXITM
- ENDIF
-
- defOMTbl %Y,<T0>
- C&Count = (X-6)/2
-
- Y = Count+1
- defOMTbls %Y,<T1>,<T2>,<T3>,<T4>,<T5>,<T6>,<T7>,<T8>,<T9>,<T10>,<T11>,<T12>,<T13>,<T14>,<T15>
- ENDM
-
-
-
- defOMTbl MACRO Count,Tbl
- IFB <Tbl>
- EXITM
- ENDIF
-
- Q&Count LABEL WORD
- X = 0
- IRP Itm,<Tbl>
- IF X GT 6
- DW Itm
- ENDIF
- X = X+1
- ENDM
- ENDM
-
-
-
- defASTbls MACRO Count,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15
- IFB <T0>
- EXITM
- ENDIF
-
- X = C&Count
- defASTbl %X,%Y,<T0>
-
- Y = Count+1
- defASTbls %Y,<T1>,<T2>,<T3>,<T4>,<T5>,<T6>,<T7>,<T8>,<T9>,<T10>,<T11>,<T12>,<T13>,<T14>,<T15>
- ENDM
-
-
-
- defASTbl MACRO Size,Count,Tbl
- IFB <Tbl>
- EXITM
- ENDIF
-
- X = 0
- IRP Itm,<Tbl>
- IF X LT 7
- DB Itm
- ENDIF
- X = X+1
- ENDM
- DB Size
- DW Q&Count
- ENDM
-
-
-
- COMMENT %
- ==============================================================================
- Defines a slave table. Takes an object (master), and a list of objects
- (slaves). Creates a table starting with a count, and followed by the slaves.
-
- =============================================================================%
- defSlaveTbl MACRO Obj,Objs
- LOCAL ObjCnt
-
- Obj&SlaveTbl LABEL WORD
- DW ObjCnt
- ObjCnt = 0
- IRP Obj,<Objs>
- DW Obj
- ObjCnt = ObjCnt+1
- ENDM
- ENDM
-
-
-
- COMMENT %
- ==============================================================================
- Iterates over the specified table executing the specified code.
-
- =============================================================================%
- iterate MACRO Tbl,Cnt,Proc
- LOCAL irt1
-
- mov cx,Wptr[Tbl] ;Get loop count
- irt1: add Tbl,Cnt ;Point to next entry
- call Proc ;Execute procedure
- loop irt1
- ENDM
-
-
-